home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / cris / include / asm / thread_info.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.2 KB  |  107 lines

  1. /* thread_info.h: CRIS low-level thread information
  2.  *
  3.  * Copyright (C) 2002  David Howells (dhowells@redhat.com)
  4.  * - Incorporating suggestions made by Linus Torvalds and Dave Miller
  5.  * 
  6.  * CRIS port by Axis Communications
  7.  */
  8.  
  9. #ifndef _ASM_THREAD_INFO_H
  10. #define _ASM_THREAD_INFO_H
  11.  
  12. #ifdef __KERNEL__
  13.  
  14. #define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
  15.  
  16. #ifndef __ASSEMBLY__
  17. #include <asm/types.h>
  18. #include <asm/processor.h>
  19. #include <arch/thread_info.h>
  20. #include <asm/segment.h>
  21. #endif
  22.  
  23.  
  24. /*
  25.  * low level task data that entry.S needs immediate access to
  26.  * - this struct should fit entirely inside of one cache line
  27.  * - this struct shares the supervisor stack pages
  28.  * - if the contents of this structure are changed, the assembly constants must also be changed
  29.  */
  30. #ifndef __ASSEMBLY__
  31. struct thread_info {
  32.     struct task_struct    *task;        /* main task structure */
  33.     struct exec_domain    *exec_domain;    /* execution domain */
  34.     unsigned long        flags;        /* low level flags */
  35.     __u32            cpu;        /* current CPU */
  36.     int            preempt_count;    /* 0 => preemptable, <0 => BUG */
  37.     __u32            tls;        /* TLS for this thread */
  38.  
  39.     mm_segment_t        addr_limit;    /* thread address space:
  40.                             0-0xBFFFFFFF for user-thead
  41.                            0-0xFFFFFFFF for kernel-thread
  42.                         */
  43.     struct restart_block    restart_block;
  44.     __u8            supervisor_stack[0];
  45. };
  46.  
  47. #endif
  48.  
  49. #define PREEMPT_ACTIVE        0x10000000
  50.  
  51. /*
  52.  * macros/functions for gaining access to the thread information structure
  53.  *
  54.  * preempt_count needs to be 1 initially, until the scheduler is functional.
  55.  */
  56. #ifndef __ASSEMBLY__
  57. #define INIT_THREAD_INFO(tsk)                \
  58. {                            \
  59.     .task        = &tsk,                \
  60.     .exec_domain    = &default_exec_domain,        \
  61.     .flags        = 0,                \
  62.     .cpu        = 0,                \
  63.     .preempt_count    = 1,                \
  64.     .addr_limit    = KERNEL_DS,            \
  65.     .restart_block = {                \
  66.                .fn = do_no_restart_syscall,    \
  67.     },                        \
  68. }
  69.  
  70. #define init_thread_info    (init_thread_union.thread_info)
  71.  
  72. /* thread information allocation */
  73. #define alloc_thread_info(tsk) ((struct thread_info *) __get_free_pages(GFP_KERNEL,1))
  74. #define free_thread_info(ti) free_pages((unsigned long) (ti), 1)
  75.  
  76. #endif /* !__ASSEMBLY__ */
  77.  
  78. /*
  79.  * thread information flags
  80.  * - these are process state flags that various assembly files may need to access
  81.  * - pending work-to-be-done flags are in LSW
  82.  * - other flags in MSW
  83.  */
  84. #define TIF_SYSCALL_TRACE    0    /* syscall trace active */
  85. #define TIF_NOTIFY_RESUME    1    /* resumption notification requested */
  86. #define TIF_SIGPENDING        2    /* signal pending */
  87. #define TIF_NEED_RESCHED    3    /* rescheduling necessary */
  88. #define TIF_RESTORE_SIGMASK    9    /* restore signal mask in do_signal() */
  89. #define TIF_POLLING_NRFLAG    16    /* true if poll_idle() is polling TIF_NEED_RESCHED */
  90. #define TIF_MEMDIE        17
  91. #define TIF_FREEZE        18    /* is freezing for suspend */
  92.  
  93. #define _TIF_SYSCALL_TRACE    (1<<TIF_SYSCALL_TRACE)
  94. #define _TIF_NOTIFY_RESUME    (1<<TIF_NOTIFY_RESUME)
  95. #define _TIF_SIGPENDING        (1<<TIF_SIGPENDING)
  96. #define _TIF_NEED_RESCHED    (1<<TIF_NEED_RESCHED)
  97. #define _TIF_RESTORE_SIGMASK    (1<<TIF_RESTORE_SIGMASK)
  98. #define _TIF_POLLING_NRFLAG    (1<<TIF_POLLING_NRFLAG)
  99. #define _TIF_FREEZE        (1<<TIF_FREEZE)
  100.  
  101. #define _TIF_WORK_MASK        0x0000FFFE    /* work to do on interrupt/exception return */
  102. #define _TIF_ALLWORK_MASK    0x0000FFFF    /* work to do on any return to u-space */
  103.  
  104. #endif /* __KERNEL__ */
  105.  
  106. #endif /* _ASM_THREAD_INFO_H */
  107.